<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AJAX</title>
</head>
<body>
    <script>
        // function GetJson(url) {
        //     return new Promise(function(resolve, reject) {
        //         let xmlhttp = new XMLHttpRequest();

        //         if(xmlhttp.readyState !== 4) {
        //             return;
        //         }

        //         if(xmlhttp.status >= 200 && xmlhttp.status < 300 || xmlhttp == 304) {
        //             resolve(xmlhttp.responseText);
        //         } else {
        //             reject(xmlhttp.responseText);
        //         }

        //         xmlhttp.open('get', url, true);
        //         xmlhttp.send();
        //     })
        // }

        // GetJson('/json').then(function(text) {
        //     console.log(text);
        // })

        

        // function outputRed () {
        //     let promise = new Promise(function(resolve, reject) {
        //         setTimeout(()=>{
        //             console.log('red');
        //             console.log(new Date().getSeconds());
        //             resolve(outputGreen());
        //         }, 3000)
        //     });
        //     return promise;
        // }
        // function outputGreen () {
        //     let promise = new Promise(function(resolve, reject) {
        //         setTimeout(()=>{
        //             console.log('green');
        //             console.log(new Date().getSeconds());
        //             resolve(outputYellow());
        //         }, 2000)
        //     });
        //     return promise;
        // }
        // function outputYellow () {
        //     let promise = new Promise(function(resolve, reject) {
        //         setTimeout(()=>{
        //             console.log('yellow');
        //             console.log(new Date().getSeconds());
        //             resolve(outputRed());
        //         }, 1000)
        //     });
        //     return promise;
        // }

        // outputRed();    
        // const promise = new Promise(function (resolve, reject) { 
        //     resolve('ok'); 
        //     setTimeout(function () { throw new Error('test') }, 0) 
        // });
        // promise.then(function (value) { console.log(value) });


        // 176824359 11 10 12
        // console.log('1'); // 同步一

        // setTimeout(function() { // 宏任务 queue 一
        //     console.log('2');
        //     process.nextTick(function() {  // process.nextTick 的回调会分发到微任务的EventQueue中
        //         console.log('3');
        //     })
        //     new Promise(function(resolve) {
        //         console.log('4');
        //         resolve();
        //     }).then(function() {
        //         console.log('5')
        //     })
        // })
        // process.nextTick(function() {
        //     console.log('6');
        // })
        // new Promise(function(resolve) { 
        //     console.log('7'); // 同步二
        //     resolve();
        // }).then(function() {
        //     console.log('8')  //微任务一
        // })

        // setTimeout(function() { // 宏任务二
        //     console.log('9');
        //     process.nextTick(function() {
        //         console.log('10');
        //     })
        //     new Promise(function(resolve) {
        //         console.log('11');
        //         resolve();
        //     }).then(function() {
        //         console.log('12')
        //     })
        // })

        // 定时器在 EventTable 就开始计时，计时结束后把回调放在 EventQueue
        // 宏任务：整体的 script 代码（包括同步的），setTimeout，setInterval，setImmediate
        // 微任务：Promise， Promise.then，process.nextTick，Object.Observe, MutationObserve

        setInterval(()=>{
            console.log(new Date().getSeconds())
        }, 3000);

        sleep(9000);
    </script>
</body>
</html>